TODO: ^E should set the ideal cursor column to a special value which always
      moves the cursor to the end of whatever line it is on.
      (Done!)

TODO: Scrolling support! Implement the tui-lib ScrollBar.
      (Done!)

TODO: When resizing the editor, make sure the cursor position is kept within
      the visible scroll area (and is not moved). Try to maintain its offset
      relative to the vertical edge it is closer to. (For example, if growing
      while the cursor is closer to the bottom edge, new space should appear
      exclusively above the area which was already visible. This isn't always
      possible though, e.g. if it would reveal space above the first line.)
      I.e. investigate all this stuff.

TODO: Mouse support!

TODO: Don't scroll the cursor into view when resizing if the last interaction
      was directly moving only the scroll position (e.g. mouse wheel).

TODO: Option to disable word wrap. Make sure to update scrollIntoView to
      account for horizontal scrolling!

TODO: Scroll past end.

TODO: Home/End key support.

TODO: Page Up/Down key support.

TODO: Don't show the scrollbar if it's not possible to scroll up or down.

TODO: Don't display the final line if it's empty (since that means it's just
      the standardized line break at the end of every file).
      (Done!)

TODO: Use ansi.measureColumns to determine how to wrap lines. Keep in mind
      weird characters like \t - does that need to be displayed altogether
      differently, preprocessed into a string of known width so it isn't
      client dependent? (I haven't tested - need to see what measureColumns
      does with \t.)

TODO: Some way to show previous status messages. They're already tracked;
      we just need a display.

TODO: A line number margin?

TODO: Delete key support.
      (Done!)

TODO: Alt-delete support. This'll take code changes in tui-lib. Should also
      implement proper alt-backspace detection into tui-lib, instead of looking
      for the particular key codes ourselves.
